package com.administrator.scoreManageSys.mapper.course;

import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author zsh
 * @date 2022/03/25/ 15:41
 */
public interface TeachCourseMapper {
    /**
     * 获取授课信息列表
     *
     * @param teacherName 授课教师
     * @return 授课信息列表
     */
    List<Map<String, Object>> courseList(@Param("teacherName") String teacherName);


    /**
     * 添加授课信息
     *
     * @param userId     添加人id
     * @param createTime 添加时间
     * @param classId  班级id
     * @param subject 科目id
     * @param teachUser 授课老师id
     */
    void courseAdd(@Param("userId") Long userId, @Param("createTime") long createTime, @Param("classId") Integer classId, @Param("subject") Integer subject,  @Param("teachUser") Integer teachUser);

    /**
     * 根据id修改授课信息
     *
     * @param id        授课id
     * @param classId   授课班级
     * @param subject   授课科目
     * @param teachUser 授课教师
     */
    void courseUpdate(@Param("id") Integer id, @Param("classId") Integer classId, @Param("subject") Integer subject,  @Param("teachUser") Integer teachUser);

    /**
     * 根据id删除授课信息
     * @param id 授课信息id
     */
    void courseDelete(@Param("id") Integer id);

    /**
     * 添加考试管理
     * @param season  考季id
     * @param classId 班级id
     * @param subject 科目id
     * @param name    考试课程名称
     * @param userId  操作人id
     * @param createTime 操作时间
     */
    void examAdd(@Param("season") Integer season, @Param("classId") Integer classId, @Param("subject") Integer subject, @Param("name") String name, @Param("userId") Long userId, @Param("createTime") long createTime);

    /**
     * 获取考试管理信息列表
     * @param season 考季id
     * @param subject 科目id
     * @param name 考试名称
     * @return 列表
     */
    List<Map<String, Object>> examList(@Param("season") Integer season, @Param("subject") Integer subject, @Param("name") String name);

    /**
     * 根据id修改考试管理
     * @param season  考季id
     * @param classId 班级id
     * @param subject 科目id
     * @param name    考试课程名称
     * @param id 考试管理id
     */
    void examUpdate(@Param("season") Integer season, @Param("classId") Integer classId, @Param("subject") Integer subject, @Param("name") String name, @Param("id") Integer id);

    /**
     * 根据id删除考试管理
     * @param id 考试id
     */
    void examDelete(@Param("id") Integer id);

    /**
     * 添加授课信息
     * @param teacherId 教师id
     * @param subject 科目id
     * @param userId 操作用户id
     * @param createTime 操作时间
     */
    void theTeacherAdd(@Param("teacherId") Integer teacherId, @Param("subject") Integer subject, @Param("userId") Long userId, @Param("createTime") long createTime);

    /**
     * 获取任课教师信息列表 组织
     * @param subject  科目
     * @param name     老师姓名
     * @return 任课教师信息列表
     */
    List<Map<String, Object>> theTeacherList(@Param("subject") Integer subject, @Param("name") String name);

    /**
     * 修改任课教师信息
     *
     * @param teacherId 任课教师id
     * @param subject   任课教师科目
     * @param id        修改id
     */
    void theTeacherUpdate(@Param("teacherId") Integer teacherId, @Param("subject") Integer subject, @Param("id") Integer id);


    /**
     * 删除任课教师
     * @param id 删除任课教师id
     */
    void theTeacherDelete(@Param("id") Integer id);
}
